A storage system is a computer that provides storage service relating to the organization of information on writable persistent storage devices, such as memories, tapes or disks. The storage system is commonly deployed within a storage area network (SAN) or a network attached storage (NAS) environment. When used within a NAS environment, the storage system may be embodied as a file server including an operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on, e.g. the disks. Each “on-disk” file may be implemented as a set of data structures, e.g., disk blocks, configured to store information, such as the actual data for the file. A directory, on the other hand, may be implemented as a specially formatted file in which information about other files and directories are stored. As used herein a file is defined to be any logical storage container that contains a fixed or variable amount of data storage space, and that may be allocated storage out of a larger pool of available data storage space. As such, the term file, as used herein and unless the context otherwise dictates, can also mean a container, object or any other storage entity that does not correspond directly to a set of fixed data storage devices. A file system is, generally, a computer system for managing such files, including the allocation of fixed storage space to store files on a temporary basis.
The file server, or storage system, may be further configured to operate according to a client/server model of information delivery to thereby allow many client systems (clients) to access shared resources, such as files, stored on the storage system. Sharing of files is a hallmark of a NAS system, which is enabled because of its semantic level of access to files and file systems. Storage of information on a NAS system is typically deployed over a computer network comprising a geographically distributed collection of interconnected communication links, such as Ethernet, that allow clients to remotely access the information (files) on the storage system. The clients typically communicate with the storage system by exchanging discrete frames or packets of data according to pre-defined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP).
In the client/server model, the client may comprise an application executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet. NAS systems generally utilize file-based access protocols; therefore, each client may request the services of the storage system by issuing file system protocol messages (in the form of packets) to the file system over the network identifying one or more files to be accessed without regard to specific locations, e.g., blocks, in which the data are stored on disk. By supporting a plurality of file system protocols, such as the conventional Common Internet File System (CIFS), the Network File System (NFS) and the Direct Access File System (DAFS) protocols, the utility of the storage system may be enhanced for networking clients.
A SAN is a high-speed network that enables establishment of direct connections between a storage system and its storage devices. The SAN may thus be viewed as an extension to a storage bus and, as such, an operating system of the storage system enables access to stored information using block-based access protocols over the “extended bus”. In this context, the extended bus is typically embodied as Fibre Channel (FC) or Ethernet media adapted to operate with block access protocols, such as Small Computer Systems Interface (SCSI) protocol encapsulation over FC or TCP/IP/Ethernet.
A SAN arrangement or deployment allows decoupling of storage from the storage system, such as an application server, and some level of information storage sharing at the application server level. There are, however, environments wherein a SAN is dedicated to a single server. In some SAN deployments, the information is organized in the form of databases, while in others a file-based organization is employed. Where the information is organized as files, the client requesting the information maintains file mappings and manages file semantics, while its requests (and server responses) address the information in terms of block addressing on disk using, e.g., a logical unit number (lun).
Certain storage systems may support multi-protocol access and, to that end, enable clients to access data via both block and file-level requests. One example of such a storage system is described in U.S. patent application Ser. No. 10/215,917, entitled MULI-PROTOCOL STORAGE APPLIANCE THAT PROVIDES INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESS PROTOCOLS by Pawlowski et al., now published as U.S. Patent Publication No. 2004/0030668 A1 on Feb. 12, 2004.
Some known file systems contain the capability to generate a snapshot of the file system. In the example of a WAFL-based file system, snapshots are described in TR3002 File System Design for a NFS File Server Appliance by David Hitz, et al., published by Network Appliance, Inc. and in U.S. Pat. No. 5,819,292 entitled METHOD FOR MAINTAINING CONSISTENT STATES OF A FILE SYSTEM AND FOR CREATING USER-ACCESSIBLE READ-ONLY COPIES OF A FILE SYSTEM, by David Hitz, et al., which are hereby incorporated by reference. “Snapshot” is a trademark of Network Appliance, Inc. It is used for purposes of this patent to designate a persistent consistency point (CP) image. A persistent consistency point image (PCPI) is a point-in-time representation of a data container stored on one or more storage devices (e.g., on disk) or in other persistent memory and having a name or other identifier that distinguishes it from other PCPIs taken at other points in time. A PCPI can also include other information (metadata) about the data container at the particular point in time for which the image is taken. The terms “PCPI” and “snapshot” shall be used interchangeably throughout this patent without derogation of Network Appliance's trademark rights.
One common use for a storage system that supports block-based protocols is to export one or more data containers, such as logical unit numbers (luns), for use by a volume manager executing on a client. The volume manager typically forms the data containers into one or more volume (or disk) groups. A volume group is a set of luns aggregated (by the volume manager) to provide a storage space that may be utilized by the client to overlay one or more file systems or other structured storage thereon. As used herein, the term storage space means storage managed by a volume manager that utilizes one or more data containers hosted by one or more storage systems. One example of a storage space is a file system overlaid onto a volume group that comprises one or more luns stored within either a plurality of volumes of a single storage system or within a plurality of volume or a plurality of storage systems. Another example of a storage space is a volume group managed by a volume manager to enable an application, such as a database application, to store structured data thereon.
By utilizing a storage system to host the luns providing a storage space, the underlying data availability and protection features of the storage system's file system may be utilized with the storage space. One such feature is the ability to generate a PCPI of a volume storing the luns associated with the volume group. If all luns reside on a single volume of a single storage system, a PCPI may be generated using conventional techniques. In such a case, the PCPI of that volume generates a true point in time image of the storage space. However, if the luns are spread among either multiple volumes on a single storage system or multiple volumes on a plurality of storage systems, it is possible for a set of PCPIs of the luns providing the storage space to be generated that is not a point in time image of the data. For example, assume write data of two write operations (N and N+1), where operation N+1 is dependent on operation N, are stored on lun providing the storage space. It is possible that write data of operation N will be stored on a first data container on a storage system and write data of operation N+1 stored on another data container and another storage system. Depending on the sequence of write operations performed by each storage system, it is further possible that write data of operation N+1 is stored within the set of PCPIs, while write data of operation N is not. This will result in a storage space that, when restored from the PCPI set, is not consistent and which may prevent the volume manager from being able to recover the true state of the storage space. A PCPI set that avoids this failure, i.e., a PCPI set that only contains write data of operation N+1 if write data of operation N is included, is termed a “crash consistent” PCPI set. Similarly, a PCPI set wherein data of operation N+1 is stored within the PCPI set and is data of operation N is not is termed a “crash inconsistent” PCPI set.
One technique to enable the creation of crash consistent PCPI sets is to halt (freeze) is input/output (I/O) operations at a predetermined level of the client's protocol stack, e.g., at the application level, file system level, and/or volume manager level. If the client protocol stack supports such a freeze I/O operation, a crash consistent PCPI set may be generated by first freezing I/O operations directed to the storage space. After waiting for any final operations to be performed, PCPIs may then be generated of all of the appropriate volumes. Once the PCPI set has been generated, the frozen protocol stack level I/O operates at a predetermined level are “thawed” (resumed) for processing to the storage space.
However, a noted disadvantage is that many known file systems do not include support for such functionality. For example, the commonly available Linux operating system does not support a freeze I/O functionality operation. As such, the creation of crash consistent PCPI sets when utilizing such a file system is not available. This reduces ability to utilize the data management techniques available on a storage system.